package com.rbac.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rbac.admin.entity.SysUser;
import com.rbac.admin.model.dto.LoginDTO;
import com.rbac.admin.model.dto.RegisterDTO;
import com.rbac.admin.model.dto.UserDTO;
import com.rbac.admin.model.vo.LoginVO;
import com.rbac.admin.model.vo.UserVO;

import java.util.List;

/**
 * 用户服务接口
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 用户登录
     */
    LoginVO login(LoginDTO loginDTO);

    /**
     * 用户注册
     */
    UserVO register(RegisterDTO registerDTO);

    /**
     * 获取用户信息
     */
    UserVO getUserInfo(Long userId);

    /**
     * 更新用户信息
     */
    boolean updateUserInfo(UserDTO userDTO);

    /**
     * 分页查询用户列表
     */
    Page<UserVO> listUserPage(Integer pageNum, Integer pageSize, String keyword);

    /**
     * 根据用户ID查询角色ID列表
     */
    List<Long> getRoleIdsByUserId(Long userId);

    /**
     * 分配用户角色
     */
    boolean assignRoles(Long userId, List<Long> roleIds);
    
    /**
     * 清除用户缓存
     * @param username 用户名
     */
    void clearUserCache(String username);
}